/** 
 * Storage二次封装
 */
import config from '../config/index'
export default {
    setItem(key, val) {
        let storage = this.getStorage() // 调用getStorage获取到命名空间的值保存到storage这个变量里，比如{a: 'a', b: 'b', ...}
        storage[key] = val // 将传入的key,val 添加到上一行的对象中去,而非本地缓存window.localStorage
        window.localStorage.setItem(config.namespace, JSON.stringify(storage)) // 将storage整体再赋值给命名空间，本地缓存的更新
    },

    getItem(key) {
        return this.getStorage()[key] // 在获取只是{a:'a', b: 'b'}这样的格式基础上，取obj中的key,就是用obj[key]的方式动态获取,而不是写死的obj.a,obj.b
    },

    getStorage() { // 获取本地缓存命名空间的值结果，eg: {a: 'a', b: 'b, ...}
        return JSON.parse(window.localStorage.getItem(config.namespace) || "{}")
    },

    clearItem(key) {
        let storage = this.getStorage()
        delete storage[key]
        window.localStorage.setItem(config.namespace, JSON.stringify(storage))
    },

    clearAll() {
        window.localStorage.clear()
    }
}